package com.baofu.paycore.service.facade;

import com.baofu.paycore.service.facade.model.PayConfirmReqDTO;
import com.baofu.paycore.service.facade.model.PayResDTO;
import com.system.commons.result.Result;
import com.baofu.paycore.service.facade.model.WebPayResDTO;
import com.baofu.paycore.service.facade.model.pay.PayDTO;

/**
 * 支付类服务
 *
 * <p>
 *     1.跳转外部支付渠道进行支付
 *     2.外部支付渠道支付完成后异步回调
 *     3.快捷支付确认流程
 * </p>
 * User: LZQ  Date: 2014/11/19 ProjectName: paycore Version: 5.0.0
 * User: kwl  Date: 2016/05/06 ProjectName: paycore Version: 5.0.0
 */
public interface PayServiceFacade {

    /**
     * 跳转外部支付渠道进行支付(页面跳转)
     *
     * @param payDTO                    请求对象
     * @param transLogId                日志ID
     * @return                          跳转响应
     *                                  response.isSuccess()标示方法的远程调用状态，方法实际执行结果从result 取值
     */
    Result<WebPayResDTO> webPay(PayDTO payDTO, String transLogId);

    /**
     * 后台支付接口
     *
     * @param payDTO                    请求参数
     * @param transLogId                日志ID
     * @return                          消费服务结果
     *                                  response.isSuccess()标示方法的远程调用状态，方法实际执行结果从result 取值
     */
    Result<PayResDTO> pay(PayDTO payDTO, String transLogId);

    /**
     * 后台支付接口
     *
     * @param payDTO                    请求参数
     * @param transLogId                日志ID
     * @return                          消费服务结果
     *                                  response.isSuccess()标示方法的远程调用状态，方法实际执行结果从result 取值
     */
    Result<PayResDTO> payConfirm(PayConfirmReqDTO payDTO, String transLogId);

}
